package cn.csc.module.order.dal.dataobject.item;

import cn.csc.framework.mybatis.core.dataobject.BaseDO;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;

import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDateTime;

/**
 * 订单项 DO
 *
 * @author liuchuang
 */
@TableName("order_item")
@KeySequence("order_item_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库，可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class OrderItemDO extends BaseDO {

    /**
     * 订单项ID
     */
    @TableId
    private BigInteger id;
    /**
     * 店铺id
     */
    private BigInteger shopId;
    /**
     * 店铺名称，冗余字段
     */
    private String shopName;

    /**
     * 第三方用户id
     */
    private String appUserId;
    /**
     * 订单id
     */
    private BigInteger orderId;
    /**
     * 分类id
     */
    private String categoryId;
    /**
     * 产品ID
     */
    private BigInteger spuId;
    /**
     * 产品SkuID
     */
    private BigInteger skuId;
    /**
     * 用户Id
     */
    private BigInteger userId;
    /**
     * 购物车产品个数
     */
    private Integer count;
    /**
     * 产品名称
     */
    private String spuName;
    /**
     * sku名称
     */
    private String skuName;
    /**
     * 产品主图片路径
     */
    private String pic;
    /**
     * 单个orderItem的配送类型1.快递物流(默认）,2.送货上门,3.自提
     */
    private Integer deliveryType;
    /**
     * 加入购物车时间
     */
    private LocalDateTime shopCartTime;
    /**
     * 产品价格
     */
    private BigDecimal price;
    /**
     * 商品总金额
     */
    private BigDecimal spuTotalAmount;
    /**
     * 租户id
     */
    private Integer tenantId;
    /**
     * 订单状态 0未付款,1已付款,2已发货,3已签收,-1退货申请,-2退货中,-3已退货,-4取消交易 -5撤销申请
     */
    private Integer orderStatus;
    /**
     * 发货附件
     */
    private String deliveryFile;
    /**
     * 完成时间
     */
    private LocalDateTime finallyTime;
    /**
     * 发货时间
     */
    private LocalDateTime deliveryTime;
    /**
     * 订单类型 0普通订单，1采购商订单
     */
    private Integer orderType;
    /**
     * 运费备注
     */
    private String freightRemark;
    /**
     * 支付时间，冗余字段
     */
    private LocalDateTime payTime;
    /**
     * 买家手机号，冗余字段
     */
    private String memberPhone;
    /**
     * 实付金额
     */
    private BigDecimal spuActualAmount;
    /**
     * 购物卡支付金额
     */
    private BigDecimal cardPayAmount;

    /**
     * 支付类型，0微信支付、1购物卡支付、2结合支付
     */
    private Integer payType;

}
